package org.xx.armory.rpc;

import java.io.IOException;

/**
 * 用于生成RPC响应的接口。
 *
 * @author Haart
 */
@FunctionalInterface
public interface RpcWriter {
    /**
     * 生成响应。
     *
     * @param obj
     *         需要生成响应的对象。
     * @param response
     *         RPC响应对象, 响应应当被写入到该对象中。
     * @throws IOException
     *         如果向RPC响应输出流中写入时失败。
     * @throws IllegalArgumentException
     *         如果参数{@code request}是{@code null}, 或者参数{@code response}是{@code null}。
     */
    void write(
            Object obj,
            RpcResponse response
    )
            throws IOException;
}
